package t04;

import java.util.Calendar;
import java.util.Date;

public class PrintCalendar {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        //将calendar对象的当前日期设置为当前月的第一天（1号），
        //以便打印日历时，从1号开始打印，而不是当前日期开始打印
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        // 获取当前月的第一天是星期几，星期日位1，星期一为2……
        int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
        // 获取当前月的总天数
        int maxDayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        // 打印表头
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        // 在当前月份的第一天之前留空
        for (int i = 1; i < firstDayOfWeek; i++) {
            System.out.print("\t");
        }
        for (int i = 1; i < maxDayOfMonth; i++) {
            if (i == day) {
                System.out.print("*");
            }
            System.out.print(i + "\t");
            // firstDayOfWeek表示该行中前面空的位置，当前日期i加上该数后
            // 即表示当前日期在该行的第几个，再-1用于索引
            if ((i + firstDayOfWeek - 1) % 7 == 0) {
                System.out.println();
            }
        }
    }
}
